home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / unix / cpp / part01 / org / makefile.txt < prev    next >
Makefile  |  1990-01-18  |  4KB  |  133 lines

  1. # Unix makefile for cpp
  2. #
  3. # On certain systems, such as Unix System III, you may need to define
  4. # $(LINTFLAGS) in the make command line to set system-specific lint flags.
  5. #
  6. # This Makefile assumes cpp will replace the "standard" preprocessor.
  7. # Delete the reference to -DLINE_PREFIX=\"\" if cpp is used stand-alone.
  8. # LINEFIX is a sed script filter that reinserts #line -- used for testing
  9. # if LINE_PREFIX is set to "".   Note that we must stand on our heads to
  10. # match the # and a line had better not begin with $.  By the way, what
  11. # we really want is
  12. #    LINEFIX = | sed "s/^#/#line/"
  13. #
  14. CPPDEFINE = -DLINE_PREFIX=\"\"
  15. LINEFIX = | sed "s/^[^ !\"%-~]/&line/"
  16. #
  17. # Define OLD_PREPROCESSOR non-zero to make a preprocessor which is
  18. # "as compatible as possible" with the standard Unix V7 or Ultrix
  19. # preprocessors.  This is needed to rebuild 4.2bsd, for example, as
  20. # the preprocessor is used to modify assembler code, rather than C.
  21. # This is not recommended for current development.  OLD_PREPROCESSOR
  22. # forces the following definitions:
  23. #   OK_DOLLAR        FALSE    $ is not allowed in variables
  24. #   OK_CONCAT        FALSE    # cannot concatenate tokens
  25. #   COMMENT_INVISIBLE    TRUE    old-style comment concatenation
  26. #   STRING_FORMAL    TRUE    old-style string expansion
  27. #
  28. OLDDEFINE = -DOLD_PREPROCESSOR=1
  29. #
  30. # DEFINES collects all -D arguments for cc and lint:
  31. # Change DEFINES = $(CPPDEFINE) $(OLDDEFINE)
  32. # for an old-style preprocessor.
  33. # If being used for GNU Emacs, the macro EMACS will be defined as -DEMACS.
  34. #
  35. DEFINES = $(CPPDEFINE) $(OLDDEFINE) $(EMACS)
  36.  
  37. CFLAGS = -g $(DEFINES)
  38.  
  39. #
  40. # ** compile cpp
  41. #
  42. SRCS = cpp1.c cpp2.c cpp3.c cpp4.c cpp5.c cpp6.c
  43. OBJS = cpp1.o cpp2.o cpp3.o cpp4.o cpp5.o cpp6.o
  44. cpp: $(OBJS)
  45.     $(CC) $(CFLAGS) $(OBJS) -o cpp
  46.  
  47. #
  48. # ** Test cpp by preprocessing itself, compiling the result,
  49. # ** repeating the process and diff'ing the result.  Note: this
  50. # ** is not a good test of cpp, but a simple verification.
  51. # ** The diff's should not report any changes.
  52. # ** Note that a sed script may be executed for each compile
  53. #
  54. test:
  55.     cpp cpp1.c $(LINEFIX) >old.tmp1.c
  56.     cpp cpp2.c $(LINEFIX) >old.tmp2.c
  57.     cpp cpp3.c $(LINEFIX) >old.tmp3.c
  58.     cpp cpp4.c $(LINEFIX) >old.tmp4.c
  59.     cpp cpp5.c $(LINEFIX) >old.tmp5.c
  60.     cpp cpp6.c $(LINEFIX) >old.tmp6.c
  61.     $(CC) $(CFLAGS) old.tmp[123456].c
  62.     a.out cpp1.c >new.tmp1.c
  63.     a.out cpp2.c >new.tmp2.c
  64.     a.out cpp3.c >new.tmp3.c
  65.     a.out cpp4.c >new.tmp4.c
  66.     a.out cpp5.c >new.tmp5.c
  67.     a.out cpp6.c >new.tmp6.c
  68.     diff old.tmp1.c new.tmp1.c
  69.     diff old.tmp2.c new.tmp2.c
  70.     diff old.tmp3.c new.tmp3.c
  71.     diff old.tmp4.c new.tmp4.c
  72.     diff old.tmp5.c new.tmp5.c
  73.     diff old.tmp6.c new.tmp6.c
  74.     rm a.out old.tmp[123456].* new.tmp[123456].*
  75.  
  76. #
  77. # A somewhat more extensive test is provided by the "clock"
  78. # program (which is not distributed).  Substitute your favorite
  79. # macro-rich program here.
  80. #
  81. clock:    clock.c cpp
  82.     cpp clock.c $(LINEFIX) >temp.cpp.c
  83.     cc temp.cpp.c -lcurses -ltermcap -o clock
  84.     rm temp.cpp.c
  85.  
  86. #
  87. # ** Lint the code
  88. #
  89.  
  90. lint:    $(SRCS)
  91.     lint $(LINTFLAGS) $(DEFINES) $(SRCS)
  92.  
  93. #
  94. # ** Remove unneeded files
  95. #
  96. clean:
  97.     rm -f $(OBJS) cpp
  98.  
  99. #
  100. # ** Rebuild the archive files needed to distribute cpp
  101. # ** Uses the Decus C archive utility.
  102. #
  103.  
  104. archc:    archc.c
  105.     $(CC) $(CFLAGS) archc.c -o archc
  106.  
  107. archx:    archx.c
  108.     $(CC) $(CFLAGS) archx.c -o archx
  109.  
  110. archive: archc
  111.     archc readme.txt cpp.mem archx.c archc.c cpp.rno makefile.txt \
  112.         cpp*.h >cpp1.arc
  113.     archc cpp1.c cpp2.c cpp3.c >cpp2.arc
  114.     archc cpp4.c cpp5.c cpp6.c >cpp3.arc
  115.  
  116. #
  117. # Object module dependencies
  118. #
  119.  
  120. cpp1.o    :    cpp1.c cpp.h cppdef.h
  121.  
  122. cpp2.o    :    cpp2.c cpp.h cppdef.h
  123.  
  124. cpp3.o    :    cpp3.c cpp.h cppdef.h
  125.  
  126. cpp4.o    :    cpp4.c cpp.h cppdef.h
  127.  
  128. cpp5.o    :    cpp5.c cpp.h cppdef.h
  129.  
  130. cpp6.o    :    cpp6.c cpp.h cppdef.h
  131.  
  132.  
  133.